import java.util.ArrayList;
import java.util.LinkedList;
import java.util.ListIterator;

public class Main {
    public static void main(String[] args) {
        //原码里面LinkedList的使用   //底层就是实现一个双向链表
        LinkedList<Integer> list = new LinkedList<>();
        ArrayList<String> list1 = new ArrayList<>();
        LinkedList<String> List = new LinkedList<String>(list1);
        list.add(1);//add是默认使用尾插法的
        list.add(2);//add是默认使用尾插法的
        list.add(3);//add是默认使用尾插法的
        list.add(4);//add是默认使用尾插法的
        System.out.println(list);  // sout直接输出
        System.out.println(list.size()); // 输出链表的大小
        //for-each输出
        for (Integer x: list) {
            System.out.print(x+" ");
        }
        System.out.println();
        //迭代器输出
       ListIterator<Integer> it =  list.listIterator(3); //这个可以从指定位置开始打印，在list.listIterator()里面输入数据
        while (it.hasNext()){
            System.out.print(it.next()+" ");
        }

        System.out.println();
        System.out.println("反向遍历");
        //反向遍历
        ListIterator<Integer> it2 =  list.listIterator(list.size());
        while (it2.hasPrevious()){
            System.out.print(it2.previous()+" ");
        }
    }
    public static void main1(String[] args) {
        System.out.println("Hello world!");
        //LinkList的模拟实现
        //双向链表
        MyLinkList myLinkList  = new MyLinkList();
        //头插
        myLinkList.addFirst(1);
        myLinkList.addFirst(2);
        myLinkList.addFirst(3);
        myLinkList.addFirst(3);
        myLinkList.addFirst(3);
        myLinkList.addFirst(4);
        myLinkList.addFirst(5);
        myLinkList.addFirst(6);
        myLinkList.disPlay();
        //尾插

        //任意位置插入
        myLinkList.addIndex(0,8);
        myLinkList.disPlay();

        System.out.println("=======================");
        myLinkList.remove(1);
        myLinkList.disPlay();

        System.out.println("==========================");
        myLinkList.removeAllKey(3);
        myLinkList.disPlay();
        System.out.println("==========================");
        myLinkList.clear();
        myLinkList.disPlay();
    }
}